package com.kim.authorization.server.config.extend;

import com.kim.oauth.common.model.UserAccount;

/**
 * 扩展集成验证器
 *      在 UserLoginServiceImpl implements UserDetailsService 中扩展此处
 */
public interface IntegrationAuthenticator {

    /**
     * 处理集成认证
     *
     * @param entity 集成认证实体
     * @return org.surge.oauth2common.model.UserAccount
     */
    UserAccount authenticate(IntegrationAuthenticationEntity entity);

    /**
     * 预处理（准备）
     *
     * @param entity 集成认证实体
     */
    void prepare(IntegrationAuthenticationEntity entity);

    /**
     * 判断是否支持集成认证类型
     *
     * @param entity 集成认证实体
     */
    boolean support(IntegrationAuthenticationEntity entity);

    /**
     * 认证结束后执行
     *
     * @param entity 集成认证实体
     */
    void complete(IntegrationAuthenticationEntity entity);
}
